//package com.weseal.service.impl;
//
//import com.weseal.dao.FunctionInfoDao;
//import com.weseal.domain.FunctionInfo;
//import com.weseal.exception.FunctionException;
//import com.weseal.form.FunctionInfoForm;
//import com.weseal.query.FunctionInfoQuery;
//import com.weseal.response.ResponseResult;
//import com.weseal.service.FunctionInfoService;
//import com.weseal.service.RoleInfoService;
//import org.springframework.stereotype.Service;
//
//import java.util.Comparator;
//import java.util.List;
//import java.util.Set;
//import java.util.TreeSet;
//
//@Service
//public class FunctionInfoServiceImpl implements FunctionInfoService {
//
//	//@Autowired
//	private FunctionInfoDao functionInfoDao;
//
//	//@Autowired
//	private RoleInfoService roleInfoService;
//
//
//	@Override
//	public void save(FunctionInfoForm form) {
//		FunctionInfo domain = form.convert2Domain();
//		if (form.getId() == null) {
//			functionInfoDao.insert(domain);
//		} else {
//			functionInfoDao.update(domain);
//		}
//
//	}
//
//	@Override
//	public void delete(Long id) {
//		functionInfoDao.delete(id);
//	}
//
//
//	@Override
//	public FunctionInfoVo selectById(Long id) {
//		FunctionInfo domain = functionInfoDao.selectById(id);
//		if (domain == null) {
//			throw FunctionException.NOT_FOUND_FUNCTION_EXCEPTION;
//		}
//		return FunctionInfoVo.convert2Vo(domain);
//	}
//
//
//	public ResponseResult<FunctionInfoVo> pageQuery(FunctionInfoQuery query) {
//		List<FunctionInfo> domains = functionInfoDao.pageQuery(query);
//		List<FunctionInfoVo> functionInfoVos = FunctionInfoVo.convert2Vo(domains);
//		return new ResponseResult<FunctionInfoVo>(functionInfoVos, query, domains);
//	}
//
//
//	public Set<FunctionInfoVo> queryByMasterId(Long masterId) {
//		Set<FunctionInfoVo> functionInfoVoList = initFunctionInfoVos();
//		List<RoleInfoVo> roleInfoVos = roleInfoService.queryByMasterId(masterId);
//		for (RoleInfoVo roleInfoVo : roleInfoVos) {
//			List<FunctionInfo> functionInfos = functionInfoDao.selectByRoleId(roleInfoVo.getId());
//			List<FunctionInfoVo> functionInfoVos = FunctionInfoVo.convert2Vo(functionInfos);
//			functionInfoVoList.addAll(FunctionInfoVo.convert2Menu(functionInfoVos));
//		}
//		return functionInfoVoList;
//	}
//
//	@Override
//	public List<FunctionInfoVo> queryByRoleId(Long roleId) {
//		return FunctionInfoVo.convert2Vo(functionInfoDao.selectByRoleId(roleId));
//	}
//
//	@Override
//	public Set<FunctionInfoVo> queryAll() {
//		Set<FunctionInfoVo> functionInfoVoList = initFunctionInfoVos();
//		List<FunctionInfo> functionInfos = functionInfoDao.selectAll();
//		List<FunctionInfoVo> functionInfoVos = FunctionInfoVo.convert2Vo(functionInfos);
//		functionInfoVoList.addAll(FunctionInfoVo.convert2Menu(functionInfoVos));
//		return functionInfoVoList;
//	}
//
//	private <T extends SequenceVo> Set<T> initFunctionInfoVos() {
//		return new TreeSet<T>(new Comparator<T>() {
//			@Override
//			public int compare(T o1, T o2) {
//				int code = o1.getSequence() - o2.getSequence();
//				if (code == 0) {
//					return o1.hashCode() - o2.hashCode();
//				}
//				return code;
//			}
//		});
//	}
//
//}